1. Statement of the Technical Field
The present invention relates to the field of data caching and more particularly to caching contextually variant objects in a distributed computing system.
2. Description of the Related Art
Caching is the temporary storage of objects for subsequent retrieval. Caching objects over a network can provide several performance advantages. For instance, caching can reduce network bandwidth consumption in consequence of fewer requests and responses transmitted over the network. Caching also can reduce server load as a result of handling fewer requests. Finally, caching can reduce response latency as responses for cached requests are available immediately, and are closer to the client being served. Together, these advantages can enhance the performance while reducing the cost of deploying applications.
Typically, caching can be performed in the client application. In that regard, caching functions are included as part of most commercially available Web browsers. Client side caches typically cache network objects obtained from many servers, but all for a single end-user. Caching, however, also can be performed in between the client and the server as part of a proxy. Proxy caches are often located near network gateways to reduce the bandwidth required over expensive dedicated network connections. Unlike the client-side cache, the proxy cache can serve many end-users with cached objects obtained from many servers. For even greater performance, many proxy caches are included as part of a cache hierarchy in which a cache can inquire of neighboring caches for a requested object in order to reduce the need to fetch the object directly.
In addition to client-side caching and proxy caching, caches also can be placed directly in front of a particular server in order to reduce the number of requests that the server must handle. Most proxy caches can be used in this fashion, but this form of a cache has been referred to otherwise as a “reverse cache”, “inverse cache”, or sometimes “httpd accelerator” in reference to the hypertext transfer protocol. In particular, the terms “reverse” and “inverse” refer to the fact that the cache stores objects for many clients, but the objects are obtained from a single server.
Though effective for many purposes, each of the client-side cache, proxy cache and reverse cache can be considered deficient in several ways. For instance, caches are specifically configured for particular contexts. Particularly, caches can be configured to cache many types of objects, including database objects, remote method calls, the results of expensive computations, Web pages, application components and images. Of course, depending upon the context, the caching rules specified in each “caching policy”, particularly the cache key generation rules and cache entry invalidation rules, will vary. Furthermore, the manner in which cache entries are named also can vary according to the naming convention associated with each context. In consequence, to reconfigure the cache for operation in a different context, however, requires the redesign of the caching engine itself.